package com.yxx.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.MediaType;
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
import org.springframework.web.client.RestTemplate;

import java.util.List;

/**
 * RestTemplate配置
 * RestTemplate类用于配置和自定义RestTemplate实例
 * @author yuxiangxun
 * @date 2025/1/18
 * @apiNote
 */
@Configuration
public class RestTemplateConfig {

    /**
     * 创建并配置一个RestTemplate Bean 用于 HTTP 请求和发送的响应处理
     * @return RestTemplate实例
     */
    @Bean("restTemplate")
    public RestTemplate restTemplate(){
        RestTemplate restTemplate = new RestTemplate();
        //  创建并配置 Jackson 消息转换器，用于处理 JSON 数据
        MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
        // 扩展支持的媒体类型，包括 TEXT_HTML 和 TEXT_PLAIN
        converter.setSupportedMediaTypes(List.of(MediaType.TEXT_HTML, MediaType.TEXT_PLAIN));
        // 将自定义的消息转换器添加到 RestTemplate 的消息转换器列表中
        restTemplate.getMessageConverters().add(converter);
        return restTemplate;
    }
}
